﻿using System;

namespace FxSuperCore.Log
{
	public class PluginLoggerPrinter : ILogPrint
	{
		private readonly ILogPrint _proxyLoggerPrinter;

		private readonly string _pluginName;

		public PluginLoggerPrinter(string pluginName, ILogPrint sourceLogprinter)
		{
			_pluginName = pluginName;
			_proxyLoggerPrinter = sourceLogprinter;
		}

		public string FormatObject(object msg)
		{
			return $"[{_pluginName}]{_proxyLoggerPrinter.FormatObject(msg)}";
		}

		public void Info(object msg) => _proxyLoggerPrinter.Info(FormatObject(msg));

		public void Debug(object msg) => _proxyLoggerPrinter.Debug(FormatObject(msg));

		public void Warnning(object msg) => _proxyLoggerPrinter.Warnning(FormatObject(msg));

		public void Error(object msg) => _proxyLoggerPrinter.Error(FormatObject(msg));

		public void Trace(object msg) => _proxyLoggerPrinter.Trace(FormatObject(msg));
	}
}
